package site.beanyon.now.service;

import site.beanyon.now.model.dto.TimeCardDTO;
import site.beanyon.now.model.po.TimeCardPO;

import java.util.List;

/**
 * 时间卡片服务接口
 */
public interface TimeCardService {
    /**
     * 根据用户id和时间戳查询时间卡片列表及其对应的时间区间列表
     *
     * @param date 要查询的日期（yyyy-MM-dd 格式）
     * @return 持有时间区间对象的时间卡片列表
     */
    List<TimeCardDTO> listTimeCard(String date);

    /**
     * 为用户创建时间卡片
     *
     * @param timeCardPO 用于接收存入数据库后的时间卡片id
     * @return 是否创建成功
     */
    boolean createTimeCard(TimeCardPO timeCardPO);

    /**
     * 为用户创建时间卡片，并绑定时间卡片的activity字段（用于根据时间计划自动创建时间卡片）
     *
     * @param userId   用户id
     * @param activity 活动名称
     * @return 是否创建成功
     */
    boolean createTimeCardWithActivity(Integer userId, String activity);

    /**
     * 删除时间卡片
     *
     * @param cardId 要删除的时间卡片id
     * @return 是否删除成功
     */
    boolean deleteTimeCard(Integer cardId);

    /**
     * 更新时间卡片的activity
     *
     * @param cardId   时间卡片id
     * @param activity 新的activity
     * @return 是否修改成功
     */
    boolean updateActivity(Integer cardId, String activity);

    /**
     * 判断今日时间卡片中是否已经存在activity
     *
     * @param activity 活动名称
     * @return 是否存在
     */
    boolean activityExists(String activity);

    /**
     * 使用TimeCardPO列表构建TimeCardDTO列表，并返回
     *
     * @param timeCardPOList 时间卡片的持久化对象列表
     * @return 时间卡片的传输对象列表
     */
    List<TimeCardDTO> convertPOs2DTOs(List<TimeCardPO> timeCardPOList);
}
